/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sma.renamefilewindows.utils;

import com.sma.renamefilewindows.ihm.panel.RendreSequentielPnl.Separations.SeparationsEnum;
import com.sma.renamefilewindows.utils.classe.PositionUtils.Position;
import java.io.File;
import java.util.HashMap;

/**
 *
 * @author SMA
 * @version 1.0
 */
public class StringUtils {

    public static String modifTexteWithAddTexte(String texteOrg, String texteToAdd, Position position) {
        String[] texteSplit = texteOrg.split("[.]");
        StringBuilder texte = new StringBuilder();
        switch (position) {
            case AVANT:
                texte.append(texteToAdd).append(texteSplit[0]).append(".").append(texteSplit[1]);
                break;
            case APRES:
                texte.append(texteSplit[0]).append(texteToAdd);
                if(texteSplit.length > 1){
                    texte.append(".").append(texteSplit[1]);
                }
                break;
            case EXTENSION:
                texte.append(texteOrg).append(".").append(texteToAdd);
            default:
                break;
        }
        return texte.toString();


    }

    public static void modifTexteWithAddTexte(HashMap<File, String> lstFichier, String texteToAdd, Position position) {
        int i = 0;
        for (File fichier : lstFichier.keySet()) {
            String repertoire = fichier.getParent();
            String fileName = fichier.getName();
            String newFileName = modifTexteWithAddTexte(fileName, texteToAdd, position);
            lstFichier.put(fichier, repertoire + "/" + newFileName);
        }

    }

    private static String getStrNumero(int numero, int taille) {
        StringBuilder num = new StringBuilder();
        for (int i = String.valueOf(numero).length() ; i < taille; i++) {
            num.append("0");
        }
        num.append(numero);
        return num.toString();
    }
    
    private static String getSeparateur(SeparationsEnum separation){
        String retour = "";
        switch(separation){
            case AUCUN:
                retour = "";
                break;
            case TRAIT_SOULIGNEMENT:
            default:
                retour = "_";
                break;
        }
        return retour;
    }

    public static String rendreSequentiel(String nouveauTexte, Position position, SeparationsEnum separation, int numero) {
        int taille = 2;
        String[] texteSplit = nouveauTexte.split("[.]");
        StringBuilder fileName = new StringBuilder();

        switch (position) {
            case AVANT:
                fileName.append(getStrNumero(numero, taille)).append(getSeparateur(separation)).append(nouveauTexte);
                break;
            case APRES:
                fileName.append(texteSplit[0]).append("_").append(numero);
                if(texteSplit.length > 1){
                    fileName.append(".").append(texteSplit[1]);
                }
                break;
            case EXTENSION:
                fileName.append(nouveauTexte).append(".").append(getStrNumero(numero, taille));
            default:
                break;
        }
        return fileName.toString();
    }

    public static void rendreSequentiel(HashMap<File, String> lstFichier, Position position, SeparationsEnum separation, int numerationDebut, boolean useNouveauTexte,String nouveauTexte) {
        int i = numerationDebut;
        for (File fichier : lstFichier.keySet()) {
            String nouveauTxtTmp = nouveauTexte;
            String repertoire = fichier.getParent();
            String fileName = fichier.getName();
            if(!useNouveauTexte){
                nouveauTxtTmp = fileName;
            }else{
                String[] texteSplit = fileName.split("[.]");
                if(texteSplit.length > 1){
                    nouveauTxtTmp += "." + texteSplit[1];
                }
            }
            String newFileName = rendreSequentiel(nouveauTxtTmp, position, separation, i++);
            lstFichier.put(fichier, repertoire + "/" + newFileName);
        }

    }
}
